# language: en
# Source: http://github.com/aslakhellesoy/cucumber/blob/master/examples/i18n/en/features/addition.feature
# Updated: Tue May 25 15:51:43 +0200 2010
Feature: Calificar un libro
  In order dar la calificacion para un libro de la libreria.
  As un usuario de la libreria
  I want to realizar la calificacion de un libro y que se refleje el resultado en interfaz.

  Scenario Outline: Calificar un libro que compre en la libreria.
    Given existen libros sin calificar en la base de datos
    And estoy en la pagina de calificar libros
    When seleccione el libro a calificar  <libro seleccionado>
    And seleccione la calificacion que le quiero dar al libro  <calificacion>
    And presiono <registrar>
    Then el resultado deberia ser <resultado> en la pantalla.

  Examples:
    | libro seleccionado |  calificacion     | registrar | resultado     |
    | "libro1"           | "calificacion5"   | Registrar |     "5.0"     |

Scenario Outline: Calcular correctamente la calificacion de un libro
    Given existen libros en la base de datos con calificacion <puntaje> y numero de calificaciones <numCalificaciones>
    And estoy en la pagina de calificar libros
    When seleccione el libro a calificar  <libro seleccionado>
    And seleccione la calificacion que le quiero dar al libro  <calificacion>
    And presiono <registrar>
    Then el resultado deberia ser <resultado> en la pantalla.

  Examples:
    | libro seleccionado | puntaje |    numCalificaciones |  calificacion     | registrar | resultado     |
    | "libro1"           |   5.0   |           1          | "calificacion3"   | Registrar |     "4.0"     |
    | "libro1"           |   4.0   |           1          | "calificacion2"   | Registrar |     "3.0"     |
    | "libro1"           |   1.5   |           2          | "calificacion3"   | Registrar |     "2.0"     |
    | "libro1"           |   3.4   |           3          | "calificacion5"   | Registrar |     "3.8"     |
    | "libro1"           |   4.3   |           10         | "calificacion1"   | Registrar |     "4.0"     |

Scenario Outline: Evitar que se califique cuando no hayan libros
    Given No existen libros en la base de datos
    And estoy en la pagina de calificar libros
    And seleccione la calificacion que le quiero dar al libro  <calificacion>
    Then se deberia ver <resultado> en la pantalla.

  Examples:
    | libro seleccionado |  calificacion     | registrar |                     resultado                        |
    | "libro1"           | "calificacion4"   | Registrar | "No hay libros registrados en la base de datos"      |

Scenario Outline: Impedir que se ingresen dos califiaciones al tiempo
    Given existen libros sin calificar en la base de datos
    And estoy en la pagina de calificar libros
    When seleccione el libro a calificar  <libro seleccionado>
    And selecciono las calificaciones que le quiero dar al libro  <calificacion1> y <calificacion2>
    And presiono <registrar>
    Then el resultado deberia ser <resultado> en la pantalla.

  Examples:
    | libro seleccionado |  calificacion1     |  calificacion2    | registrar | resultado     |
    | "libro1"           | "calificacion4"    | "calificacion2"   | Registrar |     "2.0"     |
    | "libro1"           | "calificacion1"    | "calificacion5"   | Registrar |     "5.0"     |
    | "libro1"           | "calificacion2"    | "calificacion3"   | Registrar |     "3.0"     |
    | "libro1"           | "calificacion5"    | "calificacion1"   | Registrar |     "1.0"     |
    | "libro1"           | "calificacion3"    | "calificacion4"   | Registrar |     "4.0"     |

  Scenario Outline: Calificar por defecto un libro.
    Given existen libros sin calificar en la base de datos
    And estoy en la pagina de calificar libros
    When seleccione el libro a calificar  <libro seleccionado>
    And presiono <registrar>
    Then el resultado deberia ser <resultado> en la pantalla.

  Examples:
    | libro seleccionado | registrar | resultado     |
    | "libro1"           | Registrar |     "3.0"     |

Scenario Outline: Impedir que se registre una calificacion sin seleccionar puntaje
    Given existen libros sin calificar en la base de datos
    And estoy en la pagina de calificar libros
    When seleccione el libro a calificar  <libro seleccionado>
    And selecciono las calificaciones que le quiero dar al libro  <calificacion1> y <calificacion2>
    And presiono <registrar>
    Then el resultado deberia ser <resultado> en la pantalla.

    | libro seleccionado |  calificacion1     |  calificacion2    | registrar | resultado     |
    | "libro1"           | "calificacion4"    | "calificacion4"   | Registrar |     "4.0"     |
    | "libro1"           | "calificacion5"    | "calificacion5"   | Registrar |     "5.0"     |



